/**
 * @author Roger Wu
 * @version 1.0
 */
(function($) {
	$.fn.cssv = function(pre) {
		var cssPre = $(this).css(pre);
		return cssPre.substring(0, cssPre.indexOf("px")) * 1;
	};
	$.fn.jBar = function(options) {
		var op = $.extend({
					container : "#container",
					collapse : ".collapse",
					toggleBut : ".toggleCollapse div",
					sideBar : "#sidebar",
					sideBar2 : "#sidebar_s",
					splitBar : "#splitBar",
					splitBar2 : "#splitBarProxy"
				}, options);
		return this.each(function() {
			var jbar = this;
			var sbar = $(op.sideBar2, jbar);
			var bar = $(op.sideBar, jbar);
			$(op.toggleBut, bar).click(function() {
				DWZ.ui.sbar = false;
				$(op.splitBar).hide();
				var sbarwidth = sbar.cssv("left") + sbar.outerWidth();
				var barleft = sbarwidth - bar.outerWidth();
				var cleft = $(op.container).cssv("left")
						- (bar.outerWidth() - sbar.outerWidth());
				var cwidth = bar.outerWidth() - sbar.outerWidth()
						+ $(op.container).outerWidth();
				$(op.container).animate({
							left : cleft,
							width : cwidth
						}, 50, function() {
							bar.animate({
										left : barleft
									}, 500, function() {
										bar.hide();
										sbar.show().css("left", -50).animate({
													left : 5
												}, 200);
										$(window)
												.trigger(DWZ.eventType.resizeGrid);
									});
						});
				$(op.collapse, sbar).click(function() {
							var sbarwidth = sbar.cssv("left")
									+ sbar.outerWidth();
							if (bar.is(":hidden")) {
								$(op.toggleBut, bar).hide();
								bar.show().animate({
											left : sbarwidth
										}, 500);
								$(op.container).click(_hideBar);
							} else {
								bar.animate({
											left : barleft
										}, 500, function() {
											bar.hide();
										});
							}
							function _hideBar() {
								$(op.container).unbind("click", _hideBar);
								if (!DWZ.ui.sbar) {
									bar.animate({
												left : barleft
											}, 500, function() {
												bar.hide();
											});
								}
							}
							return false;
						});
				return false;
			});
			$(op.toggleBut, sbar).click(function() {
				DWZ.ui.sbar = true;
				sbar.animate({
							left : -25
						}, 200, function() {
							bar.show();
						});
				bar.animate({
							left : 5
						}, 800, function() {
							$(op.splitBar).show();
							$(op.toggleBut, bar).show();
							var cleft = 5 + bar.outerWidth()
									+ $(op.splitBar).outerWidth();
							var cwidth = $(op.container).outerWidth()
									- (cleft - $(op.container).cssv("left"));
							$(op.container).css({
										left : cleft,
										width : cwidth
									});
							$(op.collapse, sbar).unbind('click');
							$(window).trigger(DWZ.eventType.resizeGrid);
						});
				return false;
			});
			$(op.splitBar).mousedown(function(event) {
				$(op.splitBar2).each(function() {
					var spbar2 = $(this);
					setTimeout(function() {
								spbar2.show();
							}, 100);
					spbar2.css({
								visibility : "visible",
								left : $(op.splitBar).css("left")
							});
					spbar2.jDrag($.extend(options, {
								obj : $("#sidebar"),
								move : "horizontal",
								event : event,
								stop : function() {
									$(this).css("visibility", "hidden");
									var move = $(this).cssv("left")
											- $(op.splitBar).cssv("left");
									var sbarwidth = bar.outerWidth() + move;
									var cleft = $(op.container).cssv("left")
											+ move;
									var cwidth = $(op.container).outerWidth()
											- move;
									bar.css("width", sbarwidth);
									$(op.splitBar).css("left",
											$(this).css("left"));
									$(op.container).css({
												left : cleft,
												width : cwidth
											});

								}
							}));
					return false;
				});
			});
		});
	}
})(jQuery);
